import Vue from 'vue'
import Vuex from 'vuex'
import { setItem, getItem, removeItem } from '@/utils/storage.js'
Vue.use(Vuex)

export default new Vuex.Store({
  // 保存公共的数据
  state: {
    // 在tokenInfo中保存token和refresh_token
    // tokenInfo的值是先从本地存储中取，取不到就用{}
    tokenInfo: getItem('tokenInfo') || {},
    userInfo: getItem('userInfo') || {} // id, name, photo
  },
  mutations: {
    // 设置mutations 来更新（修改）userInfo
    setUserInfo (state, userObj) {
      // 1.保存到 vuex
      state.userInfo = userObj
      // 2.做持久化 -- 保存到localStorage
      setItem('userInfo', userObj)
    },
    // 设置mutations 来更新（修改）userInfo 中的头像信息
    setUserPhoto (state, photo) {
      // 1.保存到 vuex
      state.userInfo.photo = photo
      // 2.做持久化 -- 保存到localStorage
      setItem('userInfo', state.userInfo)
    },
    // 设置mutations 来更新（修改）tokenInfo
    setTokenInfo (state, tokenObj) {
      console.log(tokenObj)
      // 1.保存到 vuex
      state.tokenInfo = tokenObj

      // 2.做持久化 -- 保存到localStorage
      setItem('tokenInfo', tokenObj)
    },
    // 清除token
    mClearTokenInfo (state) {
      state.tokenInfo = {}
      // 清空 tokenInfo
      removeItem('tokenInfo')
    }
  },
  // 相当于计算属性 （基于state中的数据产生新的数据项）
  getters: {
    isLogin (state) {
      if (state.tokenInfo.token) {
        return true
      } else {
        return false
      }
    }
  },
  actions: {
  },
  modules: {
  }
})
